﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SushiWeb.Models;
using System.ServiceModel;

namespace SushiWeb.Controllers
{
    public class ProductoController : Controller
    {

        public ActionResult MProducto()
        {
           
            ProductoWS.ProductosClient proxy = new ProductoWS.ProductosClient();

            return View(proxy.ListarProducto().ToList());
        }

        public ActionResult Productos()
        {
            return View();
        }

        // POST: CrearProducto
        [HttpPost]
        public ActionResult Productos(Producto producto)
        {
            string mensaje = "";
            string tipoMensaje = "";

            try
            {

                ProductoWS.ProductosClient proxy = new ProductoWS.ProductosClient();
                ProductoWS.Producto productoACrear = new ProductoWS.Producto();

                productoACrear.Nombre = producto.Nombre;
                productoACrear.Detalle = producto.Detalle;
                productoACrear.Porcion = producto.Porcion;
                productoACrear.Precio = producto.Precio;
                productoACrear.TipoProducto = "SPCL";
                productoACrear.Imagen = producto.Imagen;

                ProductoWS.Producto productoCreado = proxy.CrearProducto(productoACrear);

                mensaje = "Los datos se grabaron satisfactoriamente";
                tipoMensaje = "INFO";
            }
            catch (FaultException<ProductoWS.ProductoException> ex)
            {
                mensaje = ex.Message;
                tipoMensaje = "WARN";
            }

            return (Json(new { mensaje = mensaje, tipoMensaje = tipoMensaje, redirectTo = Url.Action("MProducto") }, JsonRequestBehavior.DenyGet));
        }


        public ActionResult ModificarProducto(int idProducto)
        {
            string mensaje = "";
            string tipoMensaje = "";

            
                ProductoWS.ProductosClient proxy = new ProductoWS.ProductosClient();
                Producto productoModel = new Producto();

                ProductoWS.Producto productoEncontrado = proxy.ObtenerProducto(idProducto);

                productoModel.IdProducto = productoEncontrado.IdProducto;
                productoModel.Nombre = productoEncontrado.Nombre;
                productoModel.Detalle = productoEncontrado.Detalle;
                productoModel.Porcion = productoEncontrado.Porcion;
                productoModel.Precio = productoEncontrado.Precio;
                productoModel.TipoProducto = productoEncontrado.TipoProducto;
                productoModel.Imagen = productoEncontrado.Imagen;

                //mensaje = "El producto se ha modificado correctamente";
                //tipoMensaje = "INFO";

                //mensaje = "No se puede dar de baja el producto California Almond porque se encuentra en un pedido pendiente";
                //tipoMensaje = "INFO";

            return View(productoModel);
            
        }
    

        [HttpPost]
        public ActionResult ModificarProducto(Producto producto)
        {
            string mensaje = "";
            string tipoMensaje = "";

            try
            {


                ProductoWS.ProductosClient proxy = new ProductoWS.ProductosClient();
                ProductoWS.Producto productoAModificar = new ProductoWS.Producto();

                productoAModificar.IdProducto = producto.IdProducto;
                productoAModificar.Nombre = producto.Nombre;
                productoAModificar.Detalle = producto.Detalle;
                productoAModificar.Porcion = producto.Porcion;
                productoAModificar.Precio = producto.Precio;
                productoAModificar.TipoProducto = "SPCL";
                productoAModificar.Imagen = producto.Imagen;

                ProductoWS.Producto productoEncontrado = proxy.ModificarProducto(productoAModificar);

                mensaje = "El producto se ha modificado correctamente";
                tipoMensaje = "INFO";

            //mensaje = "No se puede dar de baja el producto California Almond porque se encuentra en un pedido pendiente";
            //tipoMensaje = "INFO";

            }
            catch (FaultException<ProductoWS.ProductoException> ex)
            {
                mensaje = ex.Message;
                tipoMensaje = "WARN";
            }

            //return RedirectToAction("Clientes", "Cliente");
            return (Json(new { mensaje = mensaje, tipoMensaje = tipoMensaje, redirectTo = Url.Action("MProducto", "Producto") }, JsonRequestBehavior.DenyGet));
        }

       
        // GET: Eliminar Producto
        public ActionResult EliminarProducto(int IdProducto)
        {

            ProductoWS.ProductosClient proxy = new ProductoWS.ProductosClient();
            
            ProductoWS.Producto productoEncontrado = proxy.ObtenerProducto(IdProducto);
            Producto productoModel = new Producto();

            productoModel.IdProducto = productoEncontrado.IdProducto;
            productoModel.Nombre = productoEncontrado.Nombre;
            productoModel.Detalle = productoEncontrado.Detalle;
            productoModel.Porcion = productoEncontrado.Porcion;
            productoModel.Precio = productoEncontrado.Precio;
            productoModel.TipoProducto = productoEncontrado.TipoProducto;
            productoModel.Imagen = productoEncontrado.Imagen;

            return View(productoModel);

        }

        // POST: Eliminar Producto
        [HttpPost]
        public ActionResult EliminarProducto(Producto producto)
        {
            string mensaje = "";
            string tipoMensaje = "";

            try
            {
                ProductoWS.ProductosClient proxy = new ProductoWS.ProductosClient();            

                proxy.EliminarProducto(producto.IdProducto);

                mensaje = "Se ha eliminado el producto correctamente";
                tipoMensaje = "INFO";
            }
            catch (FaultException<ProductoWS.ProductoException> ex)
            {
                    mensaje = ex.Message;
                    tipoMensaje = "WARN";
            }

            return (Json(new { mensaje = mensaje, tipoMensaje = tipoMensaje, redirectTo = Url.Action("MProducto") }, JsonRequestBehavior.DenyGet));
        }
    }
}
